Skip to content

store origin navState instead of G4TouchableHandle in HostTrackData#487

Merged
SeverinDiederichs merged 1 commit intoapt-sim:masterfrom
SeverinDiederichs:store_originNavState_overTouchableHandle
Feb 19, 2026
Merged

store origin navState instead of G4TouchableHandle in HostTrackData#487
SeverinDiederichs merged 1 commit intoapt-sim:masterfrom
SeverinDiederichs:store_originNavState_overTouchableHandle

Conversation

@SeverinDiederichs
Copy link
Collaborator

@SeverinDiederichs SeverinDiederichs commented Feb 13, 2026

This PR fixes the origin Touchable handling in the HostTrackData Mapper.

Before, there was a ! missing in this if-Statement:

  if (hostTData.originTouchableHandle) {
    leakedTrack->SetOriginTouchableHandle(*hostTData.originTouchableHandle);
}

Thus, the originTouchableHandle was never set. Fixing it, a major run time regression was found.
Indeed creating G4TouchableHandle is very expensive.
Therefore, now the vecgeom::NavState is stored in the hostTrackData and the G4TouchableHandle is only created when the track is returned to G4 from the GPU and not already per step.

This mitigates the impact significantly. In the extreme case of testEm3 where each second layer is a GPU region, the overhead was drastically reduced, in normal cases it was fully mitigated.

As the origin Touchable so far is only needed by ATLAS, one might see if it should be guarded as a compile time option.

Example Master (with origin touchable) No origin touchable PR (with origin touchable)
Em3 Regions 142.28 89.9975 95.486
Em3 191.196 116.307 116.413

It was verified that this PR

  • Changes physics results
  • Does not change physics results

@phsft-bot
Copy link

Can one of the admins verify this patch?

Copy link
Contributor

@JuanGonzalezCaminero JuanGonzalezCaminero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix!

@SeverinDiederichs SeverinDiederichs merged commit b996848 into apt-sim:master Feb 19, 2026
3 checks passed
@SeverinDiederichs SeverinDiederichs deleted the store_originNavState_overTouchableHandle branch February 19, 2026 11:39
SeverinDiederichs added a commit that referenced this pull request Feb 20, 2026
Note: this PR depends on #487 and is therefore based on it, as otherwise
merge conflicts would arise. Only to be reviewed after rebase when #487
is merged!

This PR introduces a secondary vector in the G4Step. Thus, SD codes or
UserActions that rely on the secondary vector will now not find only a
secondary vector, but the correct secondaries produced in that step.

After the reordering #486, this PR changes the following:
- The steps on the GPU are now recorded [parent1][secondary1,1] -
[parent2][secondary2,1][secondary2,2] - [parent3]...
- the number of secondaries is returned in the step
- When looping over the returned steps and processing them, the parent
steps directly consume the corresponding secondary steps
- The secondary steps are still just the initializing steps, so they
setup the HostTrackData mapper.
- Before, the secondaries always had to query for the hostTrackData
entry of the parent to get the G4 parent ID. As they are processed now
together, the G4 parent ID can be directly passed, which reduces the
expensive lookup and therefore accelerates the code
- Similarly as before, a persistent storage for the secondary tracks and
also for the secondary vector is created, to avoid re-allocation. This
made notable run time differences

For turning the userActions on, this PR slightly improves the run times
over #487:
| Example        | PR 487 | This PR  |

|---------------|--------------------------------|----------------------------|
| Em3 Regions | 95.486 | 94.4245 |
| Em3 | 116.413 | 110.233 |


It was verified that this PR
- [ ] Changes physics results
- [x] Does not change physics results
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants